package cn.tedu.innerclass;/**
 * @Author 金帮嘉诚 @Date 2021-06-25 星期五 16:06
 */
/*本类用于测试匿名内部类
 * 匿名内部类没有名字，通常与匿名对象结合着一起使用*/

/**
 * 知识点
 * 只实现、使用一次的抽象方法 用匿名内部类
 * 和抽象、接口一起出现
 */
public class TestInner5 {
    public static void main(String[] args) {
        //也就是说不必创建一个类来实现Inner1
        /*相当于创建了接口实现类+重写接口中的方法+创建对象+调用功能*/
        new Inner1() {
            @Override
            public void save() {
//                System.out.println("Inner1...save");
            }

            //不用写一个类来调用
            @Override
            public void get() {
                System.out.println("Inner1...get\n" +
                        "          行路难");
            }

        }.get();//只使用一次的情况下
        /**-----------------------分隔符-----------------------------------*/
        new Inner2() {
            @Override
            public void drink() {
                System.out.println("金樽清酒斗十千，玉盘珍馐值万钱");
            }
        }.drink();

        Inner3 inner3 = new Inner3();
        inner3.power();

        System.out.println("欲渡黄河冰塞川，将登太行雪满山");
        System.out.println("闲来垂钓碧溪上，呼复乘舟梦日边");
        System.out.println("行路难，行路难，多歧路，今安在");
        inner3.study();


    }
}

interface Inner1 {

    void save();

    void get();
}

abstract class Inner2 {
    public abstract void drink();

    public void play() {
        System.out.println("Inner2...play()");
    }
}

class Inner3 {
    public void study() {
        System.out.println("长风破浪会有时，直挂云帆济沧海");
    }

    public void power() {
        System.out.println("停杯投箸不能食，拔剑四顾心茫然");
    }
}